package com.zhou.collection

/*
 * @Description: List基本操作，构造列表的基本单位是Nil和::，Nil也可以表示为一个空列表
 * @Author: ZhOu 
 * @Date: 2018/6/12
 */
object ListTest {
  def main(args: Array[String]): Unit = {
    var stu: List[String] = List("Tom", "Lucy", "Jack")
    val sit = "Tom1" :: ("Jack1" :: ("Lucy1" :: Nil))

    val nums: List[Int] = List(1, 2, 3)

    //空列表
    val empty: List[Nothing] = List()
    val em = Nil

    //二维列表
    val two: List[List[Int]] =
      List(
        List(1, 2, 3),
        List(4, 5, 6),
        List(7, 8, 9)
      )

    val dim = (1 :: (0 :: (0 :: Nil))) ::
      (0 :: (1 :: (0 :: Nil))) ::
      (0 :: (0 :: (1 :: Nil))) :: Nil

    //连接列表可以使用：：：或者List.:::()或者List.concat()
    var c1 = stu ::: sit
    c1.foreach(s => print(s + "\t"))
    println()

    //stu添加到site后面
    var c2 = stu.:::(sit)
    c2.foreach(s => print(s + "\t"))

    println()
    var c3 = List.concat(stu, sit)
    c3.foreach(s => print(s + "\t"))

    println("\nfill函数")
    var q1 = List.fill(3)("Tom")
    println(q1)

    //tabulate方法是通过给定的函数来创建列表
    val s1 = List.tabulate(5)(n => n * 10)
    println(s1)

    val s2 = List.tabulate(4, 5)(_ * _)
    println("二维列表：" + s2)

    //reverse反转列表
    println("反转列表：" + s1.reverse)

    println(s1.take(3))

  }
}
